home *** CD-ROM | disk | FTP | other *** search
- title NodeCmp
- ; ---------------------------------------------------------------------
- ; Module: NodeCmp
- ; Purpose: Compare Token Strings
- ; Arguments: Arg1 = Address of Token
- ; Arg2 = Address of Node Record (DWORD)
- ; Result: Compares Token to Node.TokStr returns < 0, = 0 , > 0
- ; ---------------------------------------------------------------------
- .model MEDIUM,BASIC
- TokenSz EQU 40
- node struc
- left dw ? ; left node
- right dw ? ; right node
- flag db ? ; token type
- tokstr db TokenSz DUP (?) ; token
- node ends
-
- .code
- NodeCmp proc token:NEAR PTR,nodeptr:FAR PTR
- mov bx,token ; address of token descriptor
- mov si,[bx+2] ; address of token string
- les di,nodeptr ; node segment
- add di,OFFSET node.tokstr
- mov cx,TokenSz ; length of node.token
- xor ax,ax ; clear ax reg
- cld
- repe cmpsb
- jnz @F
- jcxz exit ; exact match
- @@: dec si ; adjust to non-match offset
- dec di
- mov al,BYTE PTR [si] ; setup test on last byte
- sub al,BYTE PTR es:[di] ; compared
- cbw
- exit: ret
- NodeCmp endp
- end
-